-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


FreeBSD-EN-05:03.ipi                                            Errata Notice
                                                          The FreeBSD Project

Topic:          FreeBSD/i386 may panic under heavy load on SMP machines

Category:       core
Module:         smp
Announced:      2005-01-16
Credits:        Stephan Uphoff, Xin LI
Affects:        FreeBSD 5.3-RELEASE
Corrected:      2005-01-16 08:29:14 UTC

I.   Background

Inter-processor Interrupt, also known as ``IPI'', is a mechanism on
multiprocessor system (specifically, SMP) to indicate some event that the
other CPUs should be aware of.

II.  Problem Description

Under FreeBSD 5.3-RELEASE prior to the correction date, when there are
more than two pending IPI vectors per local APIC it is possible to cause
deadlocks.  The deadlock will then result in a kernel panic.

III. Impact

SMP servers that encounted heavy load, e.g. buildworld with md(4) and -jN,
can easily be crashed.

IV.   Solution

Do one of the following to update the source tree:

  1) Upgrade your affected system to the RELENG_5_3 errata branch dated
     after the correction date using cvsup(1) or cvs(1).  This is the
     preferred method.  For information on how to use cvsup(1) to update
     your source code see:
       http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/cvsup.html

  2) Obtain the updated files using the cvsweb interface.  Cvsweb is a
     Web interface to the CVS repository.  The URL to the general
     interface is "http://www.freebsd.org/cgi/cvsweb.cgi/".  You can
     obtain any of the source files for the RELENG_5_3 branch by going
     to the src  directory ("http://www.freebsd.org/cgi/cvsweb.cgi/src")
     and then selecting the "RELENG_5_3" branch tag.  With the branch
     tag set navigate to the files listed below in the "Correction
     details" section and download them, making sure you get the correct
     revision numbers.  Copy the downloaded files into your /usr/src tree.

If using the second procedure you should make sure you have used that
same procedure to download all previous Errata Notices and Security
Advisories.  We strongly discourage this procedure due to the problems
that may be caused by not doing that - using the first procedure takes
care of making sure all updates get applied.

Then follow the normal procedures for rebuilding/reinstalling the kernel.
Details about rebuilding/reinstalling are available here:

  http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html

V.  Correction details

The following list contains the revision numbers of each file that was
corrected in FreeBSD.

- ---------------------------------------------------------------------------
RELENG_5_3

  Revision        Changes    Path
  1.342.2.13.2.8  +4 -0      src/UPDATING
  1.62.2.15.2.10  +1 -1      src/sys/conf/newvers.sh
  1.101.4.1       +2 -50     src/sys/i386/i386/apic_vector.s
  1.235.2.3.2.1   +65 -37    src/sys/i386/i386/mp_machdep.c
  1.8.4.1         +42 -9     src/sys/i386/include/apicvar.h
  1.78.4.1        +2 -5      src/sys/i386/include/smp.h

- ---------------------------------------------------------------------------

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (FreeBSD)

iD8DBQFB6yY3/G14VSmup/YRAtq7AJ4nr1MGKyV1kzEhTRN66L7atWbUUgCdHERt
tYcKMOFWc6i7sjGuJBqZvog=
=k5nm
-----END PGP SIGNATURE-----
